#pragma once

#include "Approach.h"
#include "GridParam.h"

class CApproachTrace
{
public:
	typedef boost::shared_ptr<CApproachTrace> Ptr;
public:
	CApproachTrace(CAsteroidOrbitParam::Ptr pParam, ListPtrApproachs &appList); // list will be cleaned

	void Merge(const Ptr pOtherTrace);
	void GetApproachesList(ListPtrApproachs & listPtrApproaches);
	void GetApproachesList(const CGridParam &ranges, ListPtrApproachs & listPtrApproaches);
	const CAsteroidOrbitParam::Ptr GetAsteroidOrbitParam() const;
protected:
	CAsteroidOrbitParam::Ptr	m_pAsteroidOrbitParam;
	ListPtrApproachs			m_listPtrApproaches;
};


class IApproachHolder
{
public:
	virtual bool AppendTraceApproaches(CApproachTrace::Ptr listApprc) = 0;
	virtual bool GetApproachesInRange(const CGridParam &ranges, ListPtrApproachs &ListOut) = 0;

};